<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))){
    
    switch(getParam('operation')){
        case 'cgcun':
            contabilidad_getCuentasUltimoNivel($db);
            break;
            die();
        case 's':
            contabilidad_partidasSave($db);
            break;
        case 'gc':
            contabilidad_getCiclo($db);
            break;
            
    }
}

function contabilidad_getCuentasUltimoNivel($db) {
    
    $arrResult = array();
    $empresa = getParam("empresa");
    $term = getParam("term");
    $strQuery = "SELECT c1.* FROM cllg_contab_cuenta c1
                 LEFT JOIN cllg_contab_cuenta c2 ON(c1.codigo = c2.fk_padre AND c1.fk_empresa = c2.fk_empresa )
                 WHERE (c1.codigo LIKE '%{$term}%' OR c1.nombre LIKE '%{$term}%') 
                 AND    c1.fk_empresa = '{$empresa}'
                 AND    c2.codigo IS NULL";
    $qTMP = $db->query($strQuery);
        
    if( $rTMP = $db->fetch_array($qTMP) ) {

        do {
            $arrTMP =  array();
            $arrTMP["id"] = utf8_encode($rTMP["codigo"]);
            $arrTMP["value"] = utf8_encode($rTMP["codigo"]." - ".$rTMP["nombre"]);
            
            array_push($arrResult,$arrTMP);
            
        } while ($rTMP = $db->fetch_array($qTMP));
        
    }
    $db->free_result($rTMP);
    
    print   json_encode($arrResult);    
    
}

function contabilidad_partidasSave($db) {
    
    //drawDebug($_POST);
    $intID = 0;
    $debe = 0;
    $haber = 0;
    $monto = 0;
    $empresa = getParam("empresa");
    $fecha = getParam("frmPartidas_fecha");
    $fecha = implode("-",array_reverse(explode("-",$fecha)));
    
    $monto = sqlValue(getParam("txtTotalDebe"),"float");
    $descripcion = sqlValue(getParam("frmPartidas_descripcion"),"text");
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    total_activo > 0 
                 AND    total_pasivo > 0
                 AND    fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCerrado = $db->num_rows;
    $db->free_result($qTMP);
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCorrecto = $db->num_rows;
    $db->free_result($qTMP);
    
    
    if( $intCicloCerrado > 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                No se puede ingresar partida en una fecha ya cerrada.</p>
           </div>
        </div>
        <br>
        <?php
        
    }
    else if( $intCicloCorrecto == 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                La fecha de la partida no esta configurada.</p>
           </div>
        </div>
        <br>
        <?php
        
    }
    else {
    
        $strQuery = "SELECT * FROM cllg_contab_ciclo WHERE activo = '1' AND fk_empresa = '{$empresa}'";
        $qTMP = $db->query($strQuery);
        $intNumRows = $db->num_rows;
        $rTMP = $db->fetch_array($qTMP);
        $intCiclo = $rTMP["codigo"];
        $db->free_result($qTMP);
        if( $intNumRows > 0 ) {
            
            $strQuery = "INSERT INTO cllg_contab_ajuste 
                         (id, fecha, monto, ciclo, descripcion)
                         VALUES
                         (NULL, '{$fecha}', {$monto}, '{$intCiclo}', {$descripcion})";
            $db->query($strQuery);                     
            $intID = mysql_insert_id ( $db->link_id );
            
            if( $intID > 0 ) {
                
                while ( $arrPost = each($_POST) ) {
                    
                    $arrExplode = explode("_", $arrPost["key"]);
                    
                    if( $arrExplode[0] == "hdnCuenta" && $arrPost["value"] > 0 ) {
                        
                        $debe = getParam("txtDebe_".$arrExplode[1]);
                        $haber = getParam("txtHaber_".$arrExplode[1]);
                        if( $debe > 0 && $haber == 0 ) {
                            $monto = $debe;
                            $debe = 1;
                            $haber = 0;
                        }
                        else if( $debe == 0 && $haber > 0 ) {
                            $monto = $haber;
                            $debe = 0;
                            $haber = 1;
                        }
                        $strQuery = "INSERT INTO cllg_contab_cuenta_ajuste 
                                     (cuenta, debe, haber, monto, ajuste)
                                     VALUES
                                     ('{$arrPost["value"]}', '{$debe}', '{$haber}', '{$monto}', '{$intID}')";
                        $db->query($strQuery);
                        
                    }
                    
                    
                }
                ?>
               <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
                   <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                        <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                        Partida ingresada No. <?php print $intID; ?></p>
                   </div>
               </div>
               <br>
                <?php 
                
            }
            
        }
    }
    
}

function contabilidad_getCiclo($db) {
    
    $arrResult = array();
    $empresa = getParam("empresa");
    $fecha = getParam("fecha");
    $fecha = implode(array_reverse(explode("-",$fecha)));
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo
                 WHERE  activo = '1' AND fecha_inicio <= '{$fecha}' AND fecha_fin >= '{$fecha}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    $db->free_result($qTMP);
    if( $intNumRows > 0 ) {
        $arrResult["return"] = true;    
    }
    else {
        $arrResult["return"] = false;
    }
    /*if( $rTMP = $db->fetch_array($qTMP) ) {

        do {
            $arrTMP =  array();
            $arrTMP["codigo"] = utf8_encode($rTMP["codigo"]);
            $arrTMP["fecha_inicio"] = utf8_encode($rTMP["fecha_inicio"]);
            $arrTMP["fecha_fin"] = utf8_encode($rTMP["fecha_fin"]);
            
            array_push($arrResult,$arrTMP);
            
        } while ($rTMP = $db->fetch_array($qTMP));
        
    }
    $db->free_result($rTMP);*/
    
    print   json_encode($arrResult);    
    
}
?>